Predictive value data set compression

ABSTRACT

A data set may be compressed by predicting a value for the values of the data set. A comparative value may then be determined between a predicted value and an actual value for the particular points of the data set. The comparators for the particular points of the data set may then be encoded.

This application is a continuation under 35 U.S.C §120 and 37 CRF§1.53(b) of U.S. patent application Ser. No. 14/282,138 filed May 20,2014, the disclosure of which is incorporated herein by reference in itsentirety.

FIELD

The following disclosure relates to data compression, and morespecifically to floating point data set compression.

BACKGROUND

Mobile device users are provided with significant amounts of data. Someof this data may involve image data of geographic areas. The image datamay involve data describing the physical nature of the image as well asinformation related to things depicted in the image. Further, mobiledevice users may desire the availability of data such that the data maybe accessible quickly after a request. Issues may occur, however, asmobile devices may involve limited data storage capacities as well aslimited communicative bandwidth to transfer data. Therefore, loading andpresenting significant amounts of image data to a mobile device user maynot be possible without lengthy data download delays.

SUMMARY

In an embodiment, a method involves identifying a data set comprisingdepth values for a plurality of points in an image. The method may alsoinvolve predicting a depth value for a particular point of the imagebased on depth values of neighboring points. The method may also involvedetermining a comparative value between the predicted depth value and anactual depth value for the particular point, and encoding thecomparative value.

In an embodiment, an apparatus may involve at least one processor and atleast one memory including computer program code and operable to store adata set comprising values for a plurality of pixels in an image, thevalues relating to relative distances of objects represented in theimage. The at least one memory and the computer program code may beconfigured to, with the at least one processor, cause the apparatus atleast to calculate a predicted value for a particular point of the imagebased on values of neighboring points, determine a comparator betweenthe predicted value and an actual value for the particular point, andencode the comparator for the particular point.

In an embodiment, a non-transitory computer readable medium includinginstructions that when executed on a computer are operable to identify adata set comprising values associated with individual pixels of aplurality of pixels in an image. The instructions may be furtheroperable to calculate a predicted value for a particular pixel of theimage based on values of neighboring pixels. The instructions may befurther operable to determine a comparator between the predicted valueand an actual value for the particular pixel, and encode the comparatorfor the particular pixel.

BRIEF DESCRIPTION OF THE DRAWINGS

Exemplary embodiments of the present invention are described herein withreference to the following drawings.

FIG. 1 illustrates a flow chart of an example embodiment for predictivevalue data set compression.

FIG. 2 illustrates another flow chart of an example embodiment forpredictive value data set compression.

FIGS. 3A-D illustrate an exemplary photo depth map predictive data setcompression.

FIG. 4 illustrates an exemplary system for compression, transmission,reception, and decompression of data sets.

FIG. 5 illustrates an exemplary mobile device of the system of FIG. 4.

FIG. 6 illustrates an exemplary server of the system of FIG. 4.

DETAILED DESCRIPTION

Image data may be provided to mobile device users to provide more detailand information relating to the objects in an image. Some of the imagedata may be data related to the distance of objects from an origin of animage. In particular, depth dimensions or distances to objects, such asdistances along a Z-axis perpendicular to the plane of the image, may beprovided in a depth map. A depth map may involve a value for a depthdistance of an object represented by each pixel or point of an image. Assuch, a depth map may be a collection of numbers in a data set for eachpixel indicative of a depth of the object represented by particularpixel. A depth map may also include data indicative of the position orplacement of a pixel in the image, as well as other data providingdescription of the relative physical placement of the individual pixels,or the object the pixels represent. Data acquisition techniques, such asphotogrammetry methods or Light Detection and Ranging (LIDAR), may beused to develop depth maps correlated to images. In an embodiment, suchas full field of view or 360 degree imaging, a depth map may be createdas a map of radial distances to the center of a camera or origin of animage. Depth maps may be used to enhance the interaction of a mobiledevice user with images of geographic areas. For example, relativedistances between objects of an image may be determined using the depthmap data, and used to provide additional information related to thegeographic area to a user so as to create an immersive data drivenexperience and environment.

The depth map collection of data, or data set, may be transmitted orotherwise communicated between a server and a mobile device as indicatedbelow with respect to FIGS. 4-6. A depth map data set for an image istransferred quickly and efficiently to a mobile device because the depthmap data set may be compressed so as to allow the same information to becommunicated to the mobile device, using less actual data in a transfer.In this way, data may be provided for images in a fast and bandwidthreduced manner.

A data set of numbers may be compressed by analyzing the original dataset and determining a predictable value for the numbers in the data setand also determining a comparator or comparative value between theactual value and the predictable value for the numbers in the data set.The comparator may be stored or communicated in place of the actualvalues or numbers. Numbers that are predicted correctly only requireminimal representative data to be stored, encoded, and/or communicatedas the value may be predicted without the transmit of data specific tothat number. In an embodiment, no data will need to be stored asrepresentative of the number value. In this way, smaller amounts of datamay be used to communicate the total amount of information provided bythe data set.

In some data sets, such as depth maps, there is a local similarity ofdata. For example, points in an image may represent the same object, andas such may have similar depth values. This local similarity of data maybe used as the predictor of the value for neighboring points sharing thelocality.

Depth maps may be stored using numbers of any format. In an embodiment,the numbers may be stored as floating point data having separate valuesstored for a mantissa and an exponent of the numbers. Floating pointdata compression may involve lowering the precision of floating pointnumber representation. For example, a smaller number than the standardnumber of bits may be selected to store a mantissa and an exponent of anumber. A predictive value compression technique may then be used toreduce the amount of data. The predictive value compression techniquemay also take advantage of the local similarity of data in depth maps byrecognizing that this similarity may primarily manifest itself in amagnitude component of the number such as the exponent. Therefore,points having similar exponent values may be used to predict mantissavalues.

FIG. 1 illustrates a flow chart of an example embodiment of predictivedata set compression. As presented in the following sections, the actsmay be performed using any combination of the components indicated inFIG. 4, FIG. 5, or FIG. 6. For example the term controller may refer toeither controller 200 of or processor 300 and the following acts may beperformed by mobile device 122, server 125, or a combination thereof.Additional, different, or fewer acts may be provided. The acts areperformed in the order shown or other orders. The acts may also berepeated.

In act 10, a value for a particular number of a data set involvingmultiple numbers may be predicted. The data set may be identified fromother data stored on a disk or memory, or received through acommunicative transmission or other means. The data set may involvedepth values corresponding to points or pixels of an image, and as suchbe considered a depth map of the image. The image may be of a geographicarea, and the depth values may correspond to objects appearing in theimage of the geographic area. The depth map may measure depth valuesfrom a perspective of an origin of an image such that the depth valuesfor each point are respective of a same origin, and thus relative toeach other. The depth values may be distance values from the origin,measured in any units. For example, the depth values may be measured ininches, feet, millimeters, meters, or any other unit of measure capableof indicating relative distance.

The value for the particular number may be predicted using anytechnique. In an embodiment, such as an embodiment involving a depthmap, local similarities of data may be used to predict a value for theparticular number. For example, an average of neighboring point valuesmay be used as a predicted value. Further, an average of neighboringpoints having values of a similar magnitude to an actual value for theparticular point may be used to determine a predicted value for theparticular point.

In act 20, a comparator may be determined between an actual value for aparticular point and the predicted value for the particular pointdetermined in act 10. The comparator may be any value or representationthat indicates a comparative similarity between the actual value and thepredicted value. As such, a comparator exists such that if any two ofthe actual value, predicted value, or comparator are known, then thethird may be determined. The comparator is associated with the samepoint of the image as the predicted and actual value, and in this wayrepresents data of the point in the image. In an embodiment, thecomparator may be a value indicative of the difference between theactual value and the predicted value. In an embodiment, the comparatormay be a multiplier or relative factor between the actual value and thepredicted value.

In act 30, the comparator is processed so as to store, encode, and/orcommunicate the comparator. For example, the comparator may be processedthrough an encoding algorithm. Any encoding algorithm may be used. Forexample, an arithmetic encoding algorithm may be used. The encodingalgorithm may further reduce the amount of data required to transmit orcommunicate the information of the image. Further, multiple comparatorsassociated with multiple points of the image may be encoded. In anembodiment, all of the points of an image having associated values mayhave values predicted and comparators determined.

In an embodiment, the encoded comparator may be communicated to a user.For example, the encoded comparator may be communicated from the server125 to the mobile device 122 as indicated with respect to FIG. 4. Theencoded comparator may be communicated in a data stream communicationinvolving other encoded values from the data set, as well as other imagerelated data, so as to provide a user an enhanced image basedexperience. For example, relative distances between points of the imagemay be provided to the user. As such, enhanced image data may beprovided to a mobile device user in an efficient and timely manner.

A mobile device may receive the encoded comparator. In an embodiment,the mobile device may be configured to decode the comparator. The mobiledevice may be further configured to predict a value, such as the depthvalue, for the point associated with the comparator using the samepredictive technique as was used to determine the comparator in act 10.The mobile device may then determine the actual value for the pointusing the comparator and the predicted value.

FIG. 2 illustrates an example embodiment for predictive value data setcompression involving floating point numbers. As presented in thefollowing sections, the acts may be performed using any combination ofthe components indicated in FIG. 4, FIG. 5, or FIG. 6. For example theterm controller may refer to either controller 200 of or processor 300and the following acts may be performed by mobile device 122, server125, or a combination thereof. Additional, different, or fewer acts maybe provided. The acts are performed in the order shown or other orders.The acts may also be repeated.

In act 220, a data set may be identified. The data set may be an imagedepth map data set having numbers represented in floating point format.The depth values for the points of the image may be stored in any order,for example, the depth values may be stored in Z-Order for the pixels orpoints of the image. The depth values may be relative distances ofobjects represented by the pixels of the image. Numbers represented infloating point format are represented with a fixed number of significantdigits (i.e. significand or mantissa) and scaled using an exponent. Anyexponent base may be used. For example, bases of 2, 10 or 16 may beused. Further, any standard or non-standard floating point formatrepresentation may be used. For example, the Institute of Electrical andElectronics Engineers Standard for Floating Point Arithmetic (IEEE 754)may be used. Further, the IEE 754 standard may use any level ofprecision in representation of numbers. For example, standard values forbit storage of the mantissa and exponent may be used as associated withthe Minifloat, Half, Single, Double, or Quadruple standard formats, aswell as any other format. In an embodiment, the mantissa is stored inthe data set using five (5) bits and the exponent is stored using three(3) bits.

The data set may also involve other data. In act 230 this other data maybe used to establish the existence of depth data for each pixel or pointof the image. In an embodiment, a single bit may be used for each pixelor point to indicate whether there is depth value for the pixel orpoint. For example, the bit value for each point in the dataset may beset to one (1) if there is depth data, and zero (0) if there is no depthdata.

In an embodiment, if no depth data is established for a pixel, no valuesare predicted for that particular pixel in act 238. However, if data isdetermined to exist, predicted values may be determined. In anembodiment involving depth map data for a geographic area, infinitedepth areas such as sky or horizon pixels may have no depth dataassociated. Including the depth value indicator then facilitates areduction in the processing required. In an embodiment involvingfloating point number representation the mantissa and exponent may bepredicted separately. Values may be predicted for each pixel in an imagehaving data. Further, the data for pixels may be processed sequentiallyto determine predicted values such that previously processed values maybe the values used for predicting a subsequent value. Further, in anembodiment involving local similarities of data, neighboring pointvalues that have been processed may be used to determine predictedvalues. For example, a particular pixel may only use data fromimmediately adjacent points or pixels that have been processed topredict values for the particular point. As such, organizing the datasetin a manner facilitating the processing of geometrically neighboringpoints sequentially may allow for more available predicting data, andsubsequently a more accurate prediction. It will be noted, that early inthe prediction processing, there may be little or no values to use forprediction, and as such general or average values may be used in theabsence of enough data to perform a prediction. For example, if anaverage depth value for depth data is determined to be four (4), thisvalue may be used in the absence of enough data. The general value maybe determined prior to or after the commencement of the processing ofthe data set.

In act 240 the value of the exponent may be predicted. The exponent maybe predicted by any technique. In an embodiment, the exponent may bepredicted as an average or weighted sum of exponent values ofneighboring pixels. Also, in a sequential processing embodiment, theexponent may be predicted as an average or weighted sum of neighboringpixels having already been processed.

In act 242 a comparative value between the actual value of the exponentand the predicted value of the exponent may be determined. Thecomparative value may be determined using any method. The comparativevalue may be determined such that the closer the predicted value is tothe actual value, the smaller the amount of data is required for storingthe comparative value. For example, if the predicted value matches theactual value the comparative value may be zero (0). For example, thecomparative value may be determined as the absolute difference betweenthe actual value and the determined value.

In an embodiment the comparative value may be determined for a pixelusing a predicted value P for the pixel. The comparative value C may bedetermined such that whenever the predicted value P is closer to anactual value R, the value of C becomes smaller using the followingtechnique. For a number represented with N bits the value of C may bedetermined as follows:

Input: P and R integer numbers in range [0,2^(N) − 1] Output: C integernumber in range [0,2^(N) − 1] let M := 2^(N) − 1 if P < 2^(N−1) then let p := P  let r := R else  let p:= M − P  let r:= M − R endif if p >r then  let C := 2*(p−r) − 1 else  let d := r − p;  if d > p then   letC := r  else   let C := 2*d  endif endif

If the value of an exponent is represented with four (4) bits, Table 1illustrates the values of the comparative value C.

TABLE 1 R P 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 0 1 2 3 4 5 6 7 8 910 11 12 13 14 15 1 1 0 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2 3 1 0 2 4 56 7 8 9 10 11 12 13 14 15 3 5 3 1 0 2 4 6 7 8 9 10 11 12 13 14 15 4 7 53 1 0 2 4 6 8 9 10 11 12 13 14 15 5 9 7 5 3 1 0 2 4 6 8 10 11 12 13 1415 6 11 9 7 5 3 1 0 2 4 6 8 10 12 13 14 15 7 13 11 9 7 5 3 1 0 2 4 6 810 12 14 15 8 15 14 12 10 8 6 4 2 0 1 3 5 7 9 11 13 9 15 14 13 12 10 8 64 2 0 1 3 5 7 9 11 10 15 14 13 12 11 10 8 6 4 2 0 1 3 5 7 9 11 15 14 1312 11 10 9 8 6 4 2 0 1 3 5 7 12 15 14 13 12 11 10 9 8 7 6 4 2 0 1 3 5 1315 14 13 12 11 10 9 8 7 6 5 4 2 0 1 3 14 15 14 13 12 11 10 9 8 7 6 5 4 32 0 1 15 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

For example, Table 1 shows that if P is six (6) and R is four (4), theresultant comparative value would be three (3). However, if P is six (6)and R is four (6), the resultant comparative value would be zero (0).

In act 250 the value of the mantissa may be predicted. The mantissavalue may be predicted using any technique. In an embodiment where thedata set represents values having localized similarity of data, thevalue of the mantissa may be predicted using neighboring values.Further, as pixels having similar values typically will have similarmagnitudes, the exponent values of neighboring pixels may be used todetermine which neighboring pixels represent a similar depth value andas such provide good predicting data for a particular pixel. In anembodiment, neighboring or adjacent pixels of a particular pixel havinga similar exponent value are identified, and the mantissa values of thepixels having a similar exponent are used to determine the mantissavalue of the particular point. For example, the mantissa values ofneighboring pixels having a similar exponent may be averaged to providethe mantissa value for the particular pixel. A similar exponent may bean exponent within a determined range of the exponent value of theparticular point. In an embodiment, pixels having an exponent valuewithin one (1) of the exponent value of the particular pixel areconsidered similar. Further, the actual mantissa values of theneighboring pixels with similar exponents may be normalize such that theexponents may be the same as the exponent of the particular pixel topredict a value for the mantissa of the particular point.

Once a predicted mantissa value is determined, a comparative valuebetween the actual value of a mantissa and the predicted value of themantissa may be determined in act 252. Similar techniques as describedabove with respect to act 242 may be used to determine the comparativevalue for the mantissa. For example, an absolute difference or othertechniques may be used.

In act 260 the determined comparative values are encoded. In anembodiment, both a comparative value for a mantissa and an exponent areencoded. Any encoding technique may be used. Encoding techniques whichreduce the amount of data as numbers being encoded approach zero (0) areused. In an embodiment, arithmetic encoding techniques may be used. Forexample, a comparative value may be processed by an arithmetic encoderwith appropriate arithmetic coder context that has alphabet size 2^(N)where N is number of bits used to represent original values.

In an embodiment for large values of N, such as 64 bit or 128 bitvalues, a comparative value may be subdivided into multiple code words.One embodiment involving multiple code words is to write the number ofsignificant bits of the comparative value followed by the values ofsignificant bits excluding the single most significant bit. Thistechnique may result in a discrimination of values that were predictedwith the same absolute value of error but different sign. The techniqueassures that errors of prediction of the same magnitude end up in thesame group with the same code length. For example, a technique involvesencoding the comparative value C with 2 code words, a Prefix and Suffix,which are computed as follows.

Input: C Output: Prefix, Suffix if C = 0 then  let Prefix := 0  letSuffix := Ø (no suffix is to be written) else  // here bitcount( )stands for computation of number of significant bits of the number  //and & stands for bitwise and operation  let b = bitcount(C − 1);  if b <2 then   let Prefix := 1   let Suffix := C & 1  else   let Prefix := b  let Suffix := C & (2^(Prefix−1) − 1)  endif endifwhere the Prefix value is stored as the value from alphabet with N+1symbols. For the Suffix values, different arithmetic coder contexts areused with alphabet sizes dependent on the Prefix as follows:

${Suffix}\left\{ \begin{matrix}{0,} & {{Prefix} = 0} \\{2,} & {{Prefix} = 1} \\{2^{{Prefix} - 1},} & {2 \leq {Prefix} \leq {N - 1}} \\{{2^{{Prefix} - 1} - 1},} & {{Prefix} = N}\end{matrix} \right.$

In act 270 the encoded comparative values are transmitted. The encodedcomparative values may be transmitted or otherwise communicated usingany technique. In an embodiment, the encoded comparative values may betransmitted from the server 125 to a mobile device 122 via the network127 of FIG. 4. In an embodiment, multiple encoded comparative values aretransmitted sequentially in an established order.

In act 280, encoded comparative values may be decoded. The encodedcomparative values may be decoded using any technique operable torecover the comparative values from the encoded values. The encodedvalues may be received by a separate device, such as a mobile device,from the transmission of act 270. The encoded values may be structuredin a known or determined order such that the by the receipt of theencoded values the association of encoded values of particular pixels inknown by the receipt order.

In act 280, the actual values are determined from the comparativevalues. The actual values may be determined from the comparative valuesusing any technique. As the predicted value may be determined from dataof the data set as indicated above, both the predicted value and thecomparative value are known. The predicted value and the comparativevalue may then be used to determine the actual value. In an embodiment,the actual values are determined using a technique that is inverse tothe technique used to determine the comparative value from the predictedvalue and the actual value. For example, determining the actual value Rfrom a predicted value P and a decoded comparative value C may becomputed as follows:

Input: P and C integer numbers in range [0,2^(N) − 1] Output: R integernumber in range [0,2^(N) − 1] let M := 2^(N) − 1 if P < 2^(N−1) then let p := P else  let p := M − P endif if C > p then  let r := C else ifC is odd number then  let r := p− (C +1)/2 else  let r := p+ C/2 endifif P < 2^(N−1) then  let R := r else  let R := M − r endif

When actual values are recovered, the data set may be reassembled withthe actual values in the order determined by the transmission. As such,the depth map for an image may be reconstructed.

In an embodiment, a device may perform acts 220, 230, 238, 240, 242,250, 252, 260, and 270, and a separate device may perform acts 280 and290 as well as reassembling the depth map and displaying an image to auser that is enhanced with the depth map.

FIGS. 3A-3D illustrate an embodiment of predictive value data setcompression of a depth map 306 for an image 302 of a geographical area301. FIG. 3A shows a geographic area 301 having an object 310 located adistance (e.g., 10 feet) from a camera 312 and an object 350 located agreater distance (e.g., 50 feet) from the camera 312. FIG. 3B shows animage 302 of the geographic area 302 that includes the two objects 310,350. In FIG. 3C the pixels 361, 365, 367, 368, 369 neighboring andadjacent to a particular pixel 366 are shown with positions indexed from1-3 on two perpendicular axis. FIG. 3D illustrates the enhancedinformation 370 of the image 302 relating to the neighboring pixels 361,365, 367, 368, 369 and the particular pixel. This may be because theseparticular locations in the image represent a sky or horizon for thegeographic area 301. The enhanced information may be used to create adepth map 306 relating to the depth values for the pixels of the image302. The depth map may involve an indicator of the availability of depthdata 315, an actual exponent value 316, and an actual mantissa value317. Predicted values 307 for the particular pixel 366 may be determinedusing the neighboring pixels. Specifically, the exponent value for theparticular point 366 may be predicted as the average exponent value ofthe neighboring pixels having depth data 365, 367, 368, 369. In thiscase, the average provides a fractional value. In this embodiment,fractional values may be rounded to the nearest whole number (4). Thepredicted value for the mantissa may be determined as the averagemantissa value of neighboring pixels having a similar exponent 367, 368,369. Comparative values 308 for the particular pixel 366 may bedetermined from the predicted values 307 and the actual values 309 forthe particular pixel 366, for example as is described above with respectto FIG. 2.

The comparative values 308 for the particular pixel 366 may be encoded.Also, as can be seen from FIGS. 3A-3D, the information for theparticular pixel 366 which may have been originally stored using 33bits, may be stored using three (3) bits. As such, less data may requireencoding, and even less data may be transmitted, yet the sameinformation is communicated.

For example, an actual bit sent to arithmetic encoder may be computedusing Equation 1.

code=R₀⊕P₀  Equation 1:

where R₀ is actual value zero or one corresponding to the actualpresence of the depth-map value, and P₀ is the predicted value, ⊕represents the exclusive OR. Further, a decoder may be able to generatethe same predictor based on previously decoded neighboring pixels of theparticular pixel and compute the actual value R₀ using Equation 2.

R₀=code⊕P₀  Equation 2:

Note that if a predictor P₀ matches the actual value R₀ then theresulting code value becomes zero. Therefore, a better predictor willyield higher probability of zeroes, and lower probability of ones, whichresults in compression gain through the encoding process.

In an embodiment, a compressor or encoder utilizes an arithmetic codingalgorithm to compress information for each point of a depth map. Thewriting of data with the compressor is done through Equation 3.

ac.encode(unsigned code,ac_context& context)  Equation 3:

where ac is an instance of the compressor, and context is an instance ofac_context that defines the alphabet (represented as range of unsignedintegers starting from 0) and provides the probabilities for each symbolof the alphabet.

Similarly decoding is performed using Equation 4 to read data previouslysaved by the compressor.

unsigned ac.decode(ac_context& context)  Equation 4:

FIG. 4 illustrates an exemplary system 120. The system 120 may includeincludes a developer system 121, a mobile device 122, and a network 127.Additional, different, or fewer components may be provided. For example,many mobile devices 122 may connect with the network 127.

The developer system 121 includes a server 125 and a database 123. Thedeveloper system 121 may include computer systems and networks of asystem operator such as NAVTEQ or NOKIA Corporation. The geographicdatabase 123 may be partially or completely stored in the mobile device122.

The developer system 121 and the mobile device 122 are coupled with thenetwork 127. The phrase “coupled with” is defined to mean directlyconnected to or indirectly connected through one or more intermediatecomponents. Such intermediate components may include hardware and/orsoftware-based components.

The database 123 includes geographic data used for traffic, navigation,and/or enhanced imaging related applications. The geographic data mayinclude data representing a road network or system including roadsegment data and node data. The road segment data represent roads, andthe node data represent the ends or intersections of the roads. The roadsegment data and the node data indicate the location of the roads andintersections as well as various attributes of the roads andintersections. Other formats than road segments and nodes may be usedfor the geographic data. The geographic data may also include images ofgeographic areas having associated value data sets such as depth maps.

The mobile device 122 may include one or more detectors or sensors as apositioning system built or embedded into or within the interior of themobile device 122. Alternatively, the mobile device 122 usescommunications signals for position determination. The mobile device 122receives location data from the positioning system. The server 125 mayreceive sensor data configured to describe a position of a mobiledevice, or a controller of the mobile device 122 may receive the sensordata from the positioning system of the mobile device 122. The mobiledevice 122 may also include a system for tracking mobile devicemovement, such as rotation, velocity, or acceleration. Movementinformation may also be determined using the positioning system. Themobile device 122 may use the detectors and sensors to provide data thatmay be used to further interact with images of geographic areas.

The mobile device 122 may communicate location and movement informationvia the network 127 to the server 125. The server 125 may use thelocation and movement information received from the mobile device 122 toassociate the mobile device 122 with a geographic region, or a road of ageographic region, described in the geographic database 123. Server 125may also associate the mobile device 122 with a geographic region, or aroad of a geographic region, manually.

The server 125 may receive location and movement information frommultiple mobile devices 122 over the network 127. The location andmovement information may be in the form of mobile device data. Theserver 124 may compare the mobile device data with data of a road systemstored in the database 123.

The computing resources for predictive value data set compression may bedivided between the server 125 and the mobile device 122. In someembodiments, the server 125 performs a majority of the processing. Inother embodiments, the mobile device 122 performs a majority of theprocessing. In addition, the processing is divided substantially evenlybetween the server 125 and the mobile device 122.

The network 127 may include wired networks, wireless networks, orcombinations thereof. The wireless network may be a cellular telephonenetwork, an 802.11, 802.16, 802.20, or WiMax network. Further, thenetwork 127 may be a public network, such as the Internet, a privatenetwork, such as an intranet, or combinations thereof, and may utilize avariety of networking protocols now available or later developedincluding, but not limited to TCP/IP based networking protocols.

FIG. 5 illustrates an exemplary mobile device of the system of FIG. 4.The mobile device 122 includes a controller 200, a memory 204, an inputdevice 203, a communication interface 205, position circuitry 207,movement circuitry 208, and an output interface 211. The outputinterface 211 may present visual or non-visual information such as audioinformation. Additional, different, or fewer components are possible forthe mobile device 122. The mobile device 122 is a smart phone, a mobilephone, a personal digital assistant (PDA), a tablet computer, a notebookcomputer, a personal navigation device (PND), a portable navigationdevice, and/or any other known or later developed mobile device. Thepositioning circuitry 207, which is an example of a positioning system,is configured to determine a geographic position of the mobile device122. The movement circuitry 208, which is an example a movement trackingsystem, is configured to determine movement of a mobile device 122. Theposition circuitry 207 and the movement circuitry 208 may be separatesystems, or segments of the same positioning or movement circuitrysystem. In an embodiment, components as described herein with respect tothe mobile device 122 may be implemented as a static device.

The positioning circuitry 207 may include suitable sensing devices thatmeasure the traveling distance, speed, direction, and so on, of themobile device 122. The positioning system may also include a receiverand correlation chip to obtain a GPS signal. Alternatively oradditionally, the one or more detectors or sensors may include anaccelerometer and/or a magnetic sensor built or embedded into or withinthe interior of the mobile device 122. The accelerometer is operable todetect, recognize, or measure the rate of change of translational and/orrotational movement of the mobile device 122. The magnetic sensor, or acompass, is configured to generate data indicative of a heading of themobile device 122. Data from the accelerometer and the magnetic sensormay indicate orientation of the mobile device 122. The mobile device 122receives location data from the positioning system. The location dataindicates the location of the mobile device 122.

The positioning circuitry 207 may include a Global Positioning System(GPS), Global Navigation Satellite System (GLONASS), or a cellular orsimilar position sensor for providing location data. The positioningsystem may utilize GPS-type technology, a dead reckoning-type system,cellular location, or combinations of these or other systems. Thepositioning circuitry 207 may include suitable sensing devices thatmeasure the traveling distance, speed, direction, and so on, of themobile device 122. The positioning system may also include a receiverand correlation chip to obtain a GPS signal. The mobile device 122receives location data from the positioning system. The location dataindicates the location of the mobile device 122.

The movement circuitry 208 may include gyroscopes, accelerometers,magnetometers, or any other device for tracking or determining movementof a mobile device. The gyroscope is operable to detect, recognize, ormeasure the current orientation, or changes in orientation, of a mobiledevice. Gyroscope orientation change detection may operate as a measureof yaw, pitch, or roll of the mobile device. The movement circuitry 208may be used alone, or with the positioning circuitry 207 to determinemobile device 122 movement.

Positioning and movement data obtained from a mobile device may beconsidered geographic data, device data, and/or mobile device data.

The input device 203 may be one or more buttons, keypad, keyboard,mouse, stylus pen, trackball, rocker switch, touch pad, voicerecognition circuit, or other device or component for inputting data tothe mobile device 122. The input device 203 and the output interface 211may be combined as a touch screen, which may be capacitive or resistive.The output interface 211 may be a liquid crystal display (LCD) panel,light emitting diode (LED) screen, thin film transistor screen, oranother type of display. The output interface 211 may also include audiocapabilities, or speakers. In an embodiment, the output interface 211 isoperational to display an image of a geographic area. The image may becorrelated to the current location of the mobile device using positioncircuitry 207.

The communication interface 205 is configured to send mobile devicemovement and position data to a server 125. The position circuitry 207is configured to determine the current location of the mobile device.

In an embodiment, the communication interface 205 may be configured toreceive encoded comparators of depth values for an image of a geographicarea. The controller 200 may be configured to cause the mobile device122 to decode the received encoded comparators, determine predictedvalues for the pixels of the image, and determine an actual value usingthe predicted values and the decoded comparators.

FIG. 6 illustrates an exemplary server of the geographic or navigationsystem of FIG. 4. The server 125 includes a processor 300, acommunication interface 305, and a memory 301. The server 125 may becoupled to a database 123 and a workstation 310. The database 123 may bea geographic database. The workstation 310 may be used as an inputdevice for the server 125. In addition, the communication interface 305is an input device for the server 125. The communication interface 305may receive data indicative of inputs made via the mobile device 122.

The controller 200 and/or processor 300 may include a general processor,digital signal processor, an application specific integrated circuit(ASIC), field programmable gate array (FPGA), analog circuit, digitalcircuit, combinations thereof, or other now known or later developedprocessor. The controller 200 and/or processor 300 may be a singledevice or combinations of devices, such as associated with a network,distributed processing, or cloud computing.

The memory 204 and/or memory 301 may be a volatile memory or anon-volatile memory. The memory 204 and/or memory 301 may include one ormore of a read only memory (ROM), random access memory (RAM), a flashmemory, an electronic erasable program read only memory (EEPROM), orother type of memory. The memory 204 and/or memory 301 may be removablefrom the mobile device 100, such as a secure digital (SD) memory card.

In an embodiment the processor 300 may be coupled to the memory 204operable to store a data set involving depth values for a plurality ofpixels. The memory 204 also contains program code configured to beexecuted by the processor 300 to cause the server 125 to predict a depthvalue for a particular point of the image based on depth values ofneighboring points, determine a comparator between the predicted depthvalue and an actual depth value for the particular point, and encode thecomparator for the particular point.

The communication interface 205 and/or communication interface 305 mayinclude any operable connection. An operable connection may be one inwhich signals, physical communications, and/or logical communicationsmay be sent and/or received. An operable connection may include aphysical interface, an electrical interface, and/or a data interface.The communication interface 205 and/or communication interface 305provides for wireless and/or wired communications in any now known orlater developed format.

In an embodiment, the communication interface 305 is operable totransmit encoded values corresponding to comparative values betweenactual depth data for a pixel and predicted depth data for a pixel.

While the non-transitory computer-readable medium is described to be asingle medium, the term “computer-readable medium” includes a singlemedium or multiple media, such as a centralized or distributed database,and/or associated caches and servers that store one or more sets ofinstructions. The term “computer-readable medium” shall also include anymedium that is capable of storing, encoding or carrying a set ofinstructions for execution by a processor or that cause a computersystem to perform any one or more of the methods or operations disclosedherein.

In an embodiment, the set of instructions may be configured to beexecuted by the processor 300 to cause the server 125 to identify a dataset comprising values associated with individual pixels of a pluralityof pixels in an image. The instructions may be further configured to beexecuted by the processor 300 to cause the server 125 to predict a valuefor a particular point of the image based on values of neighboringpoints. The instructions may be further configured to be executed by theprocessor 300 to cause the server 125 to determine a comparator betweenthe predicted value and an actual value for the particular point, andencode the comparator for the particular point.

In a particular non-limiting, exemplary embodiment, thecomputer-readable medium can include a solid-state memory such as amemory card or other package that houses one or more non-volatileread-only memories. Further, the computer-readable medium can be arandom access memory or other volatile re-writable memory. Additionally,the computer-readable medium can include a magneto-optical or opticalmedium, such as a disk or tapes or other storage device to capturecarrier wave signals such as a signal communicated over a transmissionmedium. A digital file attachment to an e-mail or other self-containedinformation archive or set of archives may be considered a distributionmedium that is a tangible storage medium. Accordingly, the disclosure isconsidered to include any one or more of a computer-readable medium or adistribution medium and other equivalents and successor media, in whichdata or instructions may be stored.

In an alternative embodiment, dedicated hardware implementations, suchas application specific integrated circuits, programmable logic arraysand other hardware devices, can be constructed to implement one or moreof the methods described herein. Applications that may include theapparatus and systems of various embodiments can broadly include avariety of electronic and computer systems. One or more embodimentsdescribed herein may implement functions using two or more specificinterconnected hardware modules or devices with related control and datasignals that can be communicated between and through the modules, or asportions of an application-specific integrated circuit. Accordingly, thepresent system encompasses software, firmware, and hardwareimplementations.

In accordance with various embodiments of the present disclosure, themethods described herein may be implemented by software programsexecutable by a computer system. Further, in an exemplary, non-limitedembodiment, implementations can include distributed processing,component/object distributed processing, and parallel processing.Alternatively, virtual computer system processing can be constructed toimplement one or more of the methods or functionality as describedherein.

Although the present specification describes components and functionsthat may be implemented in particular embodiments with reference toparticular standards and protocols, the invention is not limited to suchstandards and protocols. For example, standards for Internet and otherpacket switched network transmission (e.g., TCP/IP, UDP/IP, HTML, HTTP,HTTPS) represent examples of the state of the art. Such standards areperiodically superseded by faster or more efficient equivalents havingessentially the same functions. Accordingly, replacement standards andprotocols having the same or similar functions as those disclosed hereinare considered equivalents thereof.

A computer program (also known as a program, software, softwareapplication, script, or code) can be written in any form of programminglanguage, including compiled or interpreted languages, and it can bedeployed in any form, including as a standalone program or as a module,component, subroutine, or other unit suitable for use in a computingenvironment. A computer program does not necessarily correspond to afile in a file system. A program can be stored in a portion of a filethat holds other programs or data (e.g., one or more scripts stored in amarkup language document), in a single file dedicated to the program inquestion, or in multiple coordinated files (e.g., files that store oneor more modules, sub programs, or portions of code). A computer programcan be deployed to be executed on one computer or on multiple computersthat are located at one site or distributed across multiple sites andinterconnected by a communication network.

The processes and logic flows described in this specification can beperformed by one or more programmable processors executing one or morecomputer programs to perform functions by operating on input data andgenerating output. The processes and logic flows can also be performedby, and apparatus can also be implemented as, special purpose logiccircuitry, e.g., an FPGA (field programmable gate array) or an ASIC(application specific integrated circuit).

As used in this application, the term ‘circuitry’ or ‘circuit’ refers toall of the following: (a) hardware-only circuit implementations (such asimplementations in only analog and/or digital circuitry) and (b) tocombinations of circuits and software (and/or firmware), such as (asapplicable): (i) to a combination of processor(s) or (ii) to portions ofprocessor(s)/software (including digital signal processor(s)), software,and memory(ies) that work together to cause an apparatus, such as amobile phone or server, to perform various functions) and (c) tocircuits, such as a microprocessor(s) or a portion of amicroprocessor(s), that require software or firmware for operation, evenif the software or firmware is not physically present.

This definition of ‘circuitry’ applies to all uses of this term in thisapplication, including in any claims. As a further example, as used inthis application, the term “circuitry” would also cover animplementation of merely a processor (or multiple processors) or portionof a processor and its (or their) accompanying software and/or firmware.The term “circuitry” would also cover, for example and if applicable tothe particular claim element, a baseband integrated circuit orapplications processor integrated circuit for a mobile phone or asimilar integrated circuit in server, a cellular network device, orother network device.

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andanyone or more processors of any kind of digital computer. Generally, aprocessor receives instructions and data from a read only memory or arandom access memory or both. The essential elements of a computer are aprocessor for performing instructions and one or more memory devices forstoring instructions and data. Generally, a computer also includes, orbe operatively coupled to receive data from or transfer data to, orboth, one or more mass storage devices for storing data, e.g., magnetic,magneto optical disks, or optical disks. However, a computer need nothave such devices. Moreover, a computer can be embedded in anotherdevice, e.g., a mobile telephone, a personal digital assistant (PDA), amobile audio player, a Global Positioning System (GPS) receiver, to namejust a few. Computer readable media suitable for storing computerprogram instructions and data include all forms of non-volatile memory,media and memory devices, including by way of example semiconductormemory devices, e.g., EPROM, EEPROM, and flash memory devices; magneticdisks, e.g., internal hard disks or removable disks; magneto opticaldisks; and CD ROM and DVD-ROM disks. The processor and the memory can besupplemented by, or incorporated in, special purpose logic circuitry.

To provide for interaction with a user, embodiments of the subjectmatter described in this specification can be implemented on a devicehaving a display, e.g., a CRT (cathode ray tube) or LCD (liquid crystaldisplay) monitor, for displaying information to the user and a keyboardand a pointing device, e.g., a mouse or a trackball, by which the usercan provide input to the computer. Other kinds of devices can be used toprovide for interaction with a user as well; for example, feedbackprovided to the user can be any form of sensory feedback, e.g., visualfeedback, auditory feedback, or tactile feedback; and input from theuser can be received in any form, including acoustic, speech, or tactileinput.

Embodiments of the subject matter described in this specification can beimplemented in a computing system that includes a back end component,e.g., as a data server, or that includes a middleware component, e.g.,an application server, or that includes a front end component, e.g., aclient computer having a graphical user interface or a Web browserthrough which a user can interact with an implementation of the subjectmatter described in this specification, or any combination of one ormore such back end, middleware, or front end components. The componentsof the system can be interconnected by any form or medium of digitaldata communication, e.g., a communication network. Examples ofcommunication networks include a local area network (“LAN”) and a widearea network (“WAN”), e.g., the Internet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

The illustrations of the embodiments described herein are intended toprovide a general understanding of the structure of the variousembodiments. The illustrations are not intended to serve as a completedescription of all of the elements and features of apparatus and systemsthat utilize the structures or methods described herein. Many otherembodiments may be apparent to those of skill in the art upon reviewingthe disclosure. Other embodiments may be utilized and derived from thedisclosure, such that structural and logical substitutions and changesmay be made without departing from the scope of the disclosure.Additionally, the illustrations are merely representational and may notbe drawn to scale. Certain proportions within the illustrations may beexaggerated, while other proportions may be minimized. Accordingly, thedisclosure and the figures are to be regarded as illustrative ratherthan restrictive.

While this specification contains many specifics, these should not beconstrued as limitations on the scope of the invention or of what may beclaimed, but rather as descriptions of features specific to particularembodiments of the invention. Certain features that are described inthis specification in the context of separate embodiments can also beimplemented in combination in a single embodiment. Conversely, variousfeatures that are described in the context of a single embodiment canalso be implemented in multiple embodiments separately or in anysuitable sub-combination. Moreover, although features may be describedabove as acting in certain combinations and even initially claimed assuch, one or more features from a claimed combination can in some casesbe excised from the combination, and the claimed combination may bedirected to a sub-combination or variation of a sub-combination.

Similarly, while operations are depicted in the drawings and describedherein in a particular order, this should not be understood as requiringthat such operations be performed in the particular order shown or insequential order, or that all illustrated operations be performed, toachieve desirable results. In certain circumstances, multitasking andparallel processing may be advantageous. Moreover, the separation ofvarious system components in the embodiments described above should notbe understood as requiring such separation in all embodiments, and itshould be understood that the described program components and systemscan generally be integrated together in a single software product orpackaged into multiple software products.

One or more embodiments of the disclosure may be referred to herein,individually and/or collectively, by the term “invention” merely forconvenience and without intending to voluntarily limit the scope of thisapplication to any particular invention or inventive concept. Moreover,although specific embodiments have been illustrated and describedherein, it should be appreciated that any subsequent arrangementdesigned to achieve the same or similar purpose may be substituted forthe specific embodiments shown. This disclosure is intended to cover anyand all subsequent adaptations or variations of various embodiments.Combinations of the above embodiments, and other embodiments notspecifically described herein, are apparent to those of skill in the artupon reviewing the description.

The Abstract of the Disclosure is provided to comply with 37 C.F.R.§1.72(b) and is submitted with the understanding that it will not beused to interpret or limit the scope or meaning of the claims. Inaddition, in the foregoing Detailed Description, various features may begrouped together or described in a single embodiment for the purpose ofstreamlining the disclosure. This disclosure is not to be interpreted asreflecting an intention that the claimed embodiments require morefeatures than are expressly recited in each claim. Rather, as thefollowing claims reflect, inventive subject matter may be directed toless than all of the features of any of the disclosed embodiments. Thus,the following claims are incorporated into the Detailed Description,with each claim standing on its own as defining separately claimedsubject matter.

It is intended that the foregoing detailed description be regarded asillustrative rather than limiting and that it is understood that thefollowing claims including all equivalents are intended to define thescope of the invention. The claims should not be read as limited to thedescribed order or elements unless stated to that effect. Therefore, allembodiments that come within the scope and spirit of the followingclaims and equivalents thereto are claimed as the invention.

We claim:
 1. An apparatus comprising: at least one processor; and atleast one memory including computer program code and operable to store adata set comprising values for a plurality of pixels in an image, thevalues relating to relative distances of objects represented in theimage; the at least one memory and the computer program code configuredto, with the at least one processor, cause the apparatus at least to:identify an image of a geographic area; identify a depth data setcollected by a distance ranging device, the depth data set comprisingdepth values correlated to pixels in the image of the geographic area;calculate a predicted value for an exponent for a particular point ofthe image based on values of neighboring points; and calculate acomparator between the predicted value for the exponent for theparticular point and an actual value for the exponent for the particularpoint.
 2. The apparatus of claim 1, wherein the at least one memory andthe computer program code are further configured to, with the at leastone processor, cause the apparatus at least to: calculate a predictedvalue for a mantissa for a particular point of the image based on valuesof neighboring points; and calculate a comparator between the predictedvalue for the mantissa for the particular point and an actual value forthe mantissa for the particular point.
 3. The apparatus of claim 2,wherein a value for the mantissa is predicted based on mantissa valuesof neighboring points having an exponent value within one of an exponentvalue of the particular point.
 4. The apparatus of claim 1, wherein theat least one memory and the computer program code are further configuredto, with the at least one processor, cause the apparatus at least to:transmit the encoded comparator to another apparatus.
 5. The apparatusof claim 1, wherein the depth data set corresponds to one or moreobjects in the image.
 6. The apparatus of claim 1, wherein the depthdata set also includes a single bit value for whether each pixelincludes a depth value.
 7. An apparatus comprising: a communicationinterface configured to receive, from a mobile device, data for an imageof a geographic area and receive a depth data set collected by adistance ranging device, the depth data set comprising depth valuescorrelated to pixels in the image of the geographic area; and aprocessor configured to calculate a predicted value for a mantissa for aparticular point of the image based on values of neighboring points; andcalculate a comparator between the predicted value for the mantissa forthe particular point and an actual value for the mantissa for theparticular point.
 8. The apparatus of claim 7, wherein the processor isfurther configured to calculate a predicted value for an exponent for aparticular point of the image based on values of neighboring points andcalculate a comparator between the predicted value for the exponent forthe particular point and an actual value for the exponent for theparticular point.
 9. The apparatus of claim 7, wherein a value for themantissa is predicted based on mantissa values of neighboring pointshaving an exponent value within one of an exponent value of theparticular point.
 10. The apparatus of claim 7, wherein thecommunication interface is configured to transmit the encoded comparatorto another apparatus.
 11. The apparatus of claim 7, wherein the depthdata set corresponds to one or more objects in the image.
 12. Theapparatus of claim 7, wherein the depth data set also includes a singlebit value for whether each pixel includes a depth value.
 13. A methodcomprising: identifying an image of a geographic area; identifying adata set collected by a distance ranging device, the data set comprisingdepth values correlated to a plurality of points in the image of thegeographic area; predicting, by a processor, a depth value for aparticular point of the image based on depth values of neighboringpoints; determining a comparative value between the predicted depthvalue and an actual depth value for the particular point; and encodingthe comparative value as a depth value of the image of the geographicarea, wherein the predicting the depth value comprises an exponent valueor a mantissa value, wherein the comparative value comprises acomparative value determined between an actual exponent and thepredicted exponent or a comparative value determined between an actualmantissa and the predicted mantissa of the particular point.
 14. Themethod of claim 13, wherein predicting a value for the mantissa is basedon mantissa values of neighboring points having an exponent value withina range of an exponent value of the particular point.
 15. The method ofclaim 14, wherein the neighboring points having a similar exponent valueare neighboring points having an exponent value within one of theexponent value of the particular point.
 16. The method of claim 13,wherein the predictive value for the exponent of the particular point isan average of exponent values of neighboring points.
 17. The method ofclaim 13, wherein comparative values are determined and encoded for theplurality of points of the image.
 18. The method of claim 17, whereinthe data set further comprises an indicator as to an existence of depthdata for the plurality of points, and wherein comparative values areonly determined for points of the plurality of points when the indicatorindicates that points have depth data.
 19. The method of claim 13,further comprising: transmitting the encoded comparative value to amobile device.
 20. The method of claim 19, further comprising: receivingthe image of the geographic area from the mobile device; and receivingthe data set collected by a distance ranging device from the mobiledevice.